package day04;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

/**
 *  ServletRequest 请求域
 *      作用范围:   一次请求中
 *
 *      请求转发和请求重定向的区别
 *     请求转发: 浏览器发送一次请求  请求重定向: 浏览器发送了两次请求
 *      1).请求重定向:请求域数据丢失
 *      2).请求转发:  请求域中数据不会丢失
 *      3).请求重定向: 可以重定到其他服务器上,
 *         请求转发:只能转发到自己服务器上的其他资源
 *
 *  总结:
 *      应用域,请求域,会话域
 *      1). 这三个域对象的名字
 *      2). 作用范围
 *      3). 方法  增删改查
 */
public class A02_请求域 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //向请求域中存储数据
        req.setAttribute("tl","手握日月摘星辰,世间无我这般人");
        req.setAttribute("td","=======================");
        //获取请求域中的数据
//        Enumeration<String> names = req.getAttributeNames();
//        while (names.hasMoreElements()){
//            String name = names.nextElement();
//            Object value = req.getAttribute(name);
//            System.out.println(name+" "+value);
//        }
//        resp.getWriter().write("哈哈");
        
        //测试请求转发和请求重定向中请求域中的数据会丢失吗?
        //请求转发
        RequestDispatcher rd = req.getRequestDispatcher("/servletrequest1");
        rd.forward(req,resp);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
    }
}
